Skip to content

设计原则

  1. 字段和标签保持一致层级关系,从二级标签开始,一级标签不出现在字段中
  2. 如果除了一级标签没有其他层级的标签的,发关心的全量数据
  3. 不满足2的,发关心的差量数据,如果有新旧值的话,字段名定义为old_原字段new_原字段这样的形式,没有旧值的,直接发字段名
  4. ID类唯一标识字段放当层数据的最外层,比如订单 ID 放 body 最外层,sku_id 放 sku 层的最外层

订单例子

  1. 新建订单
发送订单消息
id = mq_srv.begin(
    topic='order'
    tags=['create_order'],
    key='PL1231013',
    body={
        {
            "id" : "PL4443451",
            "refund_amount" : 0,
            "is_aggregation" : 0,
            "station_id" : "T21728",
            "remark" : null,
            "freight" : 0.0,
            "real_pay" : 0,
            "salemenu_ids" : [
                "S11522"
            ],
            "status" : 1,
            "date_time" : ISODate("2019-01-18T10:25:41.726Z"),
            "pay_status" : 1,
            "total_price" : 600.0,
            "total_pay" : 600.0,
            "_lock" : "no",
            "close_time" : null,
            "expire_time" : ISODate("2019-01-18T10:30:41.726Z"),
            "time_config_id" : "ST1960",
            "details" : [
                {
                    "is_price_timing" : false,
                    "version" : 6,
                    "real_quantity" : 3.0,
                    "accept_quantity" : 3.0,
                    "sale_unit_name" : "公斤",
                    "spu_remark" : "",
                    "tax_rate" : 0,
                    "id" : "D6357858",
                    "total_item_price" : 600.0,
                    "sync_origin" : "D6357858",
                    "origins" : [],
                    "purchase_quantity" : 3.0,
                    "material" : [
                        {
                            "std_unit_name" : "公斤",
                            "real_std_count" : 3.0,
                            "spu_id" : "C1649978",
                            "std_sale_price" : 200.0,
                            "accept_std_count" : 3.0,
                            "sale_ratio" : 1.0
                        }
                    ],
                    "real_item_price" : 600.0,
                    "attrition_rate" : 0,
                    "sort_station_ids" : [],
                    "salemenu_id" : "S11522",
                    "total_item_pay" : 600.0,
                    "search_text" : [
                        "QINGWOSUN(MALONG)",
                        "QWS(ML)",
                        "青莴笋(马龙)",
                        null,
                        "QINGWOSUN(MALONG)",
                        "QWS(ML)",
                        "青莴笋(马龙)"
                    ],
                    "weighting_quantity" : 0,
                    "real_is_weight" : true,
                    "quantity" : 3.0,
                    "name" : "青莴笋(马龙)",
                    "sale_price" : 200.0
                }
            ],
            "district_code" : "530300",
            "settle_way" : 1,
            "real_price" : 600.0,
            "create_time" : ISODate("2019-01-18T10:25:41.726Z"),
            "client" : 1,
            "customer" : {
                "uid" : "160753",
                "supply_station_id" : "T21728",
                "receive_end_time" : "2019-01-17 23:30",
                "receiver_name" : "食堂人员",
                "address" : "云南爱希望农业科技开发有限公司",
                "address_id" : "150319",
                "receiver_phone" : "15887855534",
                "receive_begin_time" : "2019-01-17 08:00",
                "extender" : "{\"order_pay_method\": 2, \"resname\": \"\\u516c\\u53f8\\u98df\\u5802\\u81ea\\u7528\"}",
                "address_sign_id" : "3030400700000"
            },
            "paid_amount" : 0,
            "out_order_id" : "",
            "source_order_ids" : [],
            "freeze" : 0,
            "modify_time" : ISODate("2019-01-18T10:25:41.726Z"),
            "distribute_time" : ISODate("2019-01-17T08:00:00.000Z")
        }
    },
    serial='13afa14asd235',
)
修改订单的具体操作
order_srv.create(...)
mq_srv.commit([id])
  1. 修改下单量
发送订单消息
id = mq_srv.begin(
    topic='order'
    tags=['edit_sku_quantity', 'add_skus', 'delete_skus'],
    key='PL1231013',
    body={
        'id': 'PL1231013',
        'edit_skus': [
            'edit_sku_quantity': [{
                'id': 'D1344134',
                'old_quantity': 1.0,
                'new_quantity': 2.0
            }, {
                'id': 'D1344135',
                'old_quantity': 1.0,
                'new_quantity': 2.0
            }],
            'add_skus': [{
                'id': 'D1344136',
                'quantity': 2.0
            }],
            'delete_skus': [{
                'id': 'D1344137',
            }, {
                'id': 'D1344138'
            }]
        ]
    },
    serial='13afa14asd235'
)
修改订单的具体操作
order_srv.edit(...)
mq_srv.commit([id])
  1. 修改订单状态
发送订单消息
id = mq_srv.begin(
    topic='order'
    tags=['edit_status'],
    key='PL1231013',
    body={
        'id': 'PL1231013',
        'edit_status': {
            'old_status': 5,
            'new_status': 15
        }
    },
    serial='13afa14asd235',
)
修改订单的具体操作
order_srv.edit(...)
mq_srv.commit([id])
  1. 修改订单收货时间
发送订单消息
id = mq_srv.begin(
    topic='order'
    tags=['edit_receive_time'],
    key='PL1231013',
    body={
        '_id': 'PL1231013',
        'edit_receive_time': {
            'old_receive_begin_time': '2018-12-30 00:00:00',
            'old_receive_end_time': '2018-12-30 10:00:00,
            'new_receive_begin_time': '2018-12-31 00:00:00',
            'new_receive_end_time': '2018-12-31 10:00:00'
        }
    },
    serial='13afa14asd235',
)
修改订单的具体操作
order_srv.edit(...)
mq_srv.commit([id])
  1. 删除订单
发送订单消息
id = mq_srv.begin(
    topic='order'
    tags=['delete_order'],
    key='PL1231013',
    body={
        'id': 'PL1231013'
    },
    serial='13afa14asd235',
)
修改订单的具体操作
order_srv.delete(...)
mq_srv.commit([id])

格式不需要定那么死

有没有一种rabbitmq的过滤机制

vhost